from typing import Dict

from langchain_core.documents import Document


class BaseVectorAdapter:

    @classmethod
    def doc_builder(cls, hit: Dict) -> Document:
        """
        文档结构处理
         向量数据库存储结构
           hit["_source"]["metadata"]["originalText"]  详细文本内容，  text 可以理解为是originalText 的查询关键字
           hit["_source"]["text"]  向量值对应的文本(该文本用来计算向量值)
        Document展示结构调整
         在langchain中  Document的page_content 字段用来作为最终的输出结果给到chatgpt. 但是该字段取的是text 值，
         所以需要使用originalText进行替换
        """
        original_text = hit["_source"]["metadata"]["originalText"],
        hit["_source"]["metadata"].pop("originalText")
        hit["_source"]["metadata"].update({"text": hit["_source"]["text"]})
        return Document(
            page_content=original_text[0],
            metadata=hit["_source"]["metadata"],
        )
